import request from '@/utils/request'

/**
 * 获取问卷模板列表
 * @param {Object} params - 查询参数 {pageNum, pageSize, keyword}
 * @returns {Promise}
 */
export function getQuestionnaireTemplates(params) {
  return request({
    url: '/api/questionnaires/templates',
    method: 'get',
    params
  })
}

/**
 * 创建问卷模板
 * @param {Object} data - 问卷模板数据
 * @returns {Promise}
 * 
 * 请求参数示例:
 * {
 *   "title": "活动满意度调查",
 *   "description": "请对本次活动进行评价",
 *   "questions": [
 *     {
 *       "questionText": "您对本次活动的总体满意度如何？",
 *       "questionType": "single",
 *       "options": ["很满意", "满意", "一般", "不满意", "很不满意"],
 *       "isRequired": true,
 *       "sortOrder": 1
 *     },
 *     {
 *       "questionText": "您认为本次活动哪些方面做得好？（可多选）",
 *       "questionType": "multiple",
 *       "options": ["内容丰富", "组织有序", "互动性强", "场地舒适", "其他"],
 *       "isRequired": false,
 *       "sortOrder": 2
 *     },
 *     {
 *       "questionText": "您对本次活动有什么建议？",
 *       "questionType": "text",
 *       "isRequired": false,
 *       "sortOrder": 3
 *     }
 *   ]
 * }
 */
export function createQuestionnaireTemplate(data) {
  return request({
    url: '/api/questionnaires/templates',
    method: 'post',
    data
  })
}

/**
 * 更新问卷模板
 * @param {Number|String} id - 问卷模板ID
 * @param {Object} data - 问卷模板数据
 * @returns {Promise}
 */
export function updateQuestionnaireTemplate(id, data) {
  console.log('调用更新问卷API，ID:', id, '数据:', data)
  return request({
    url: `/api/questionnaires/templates/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除问卷模板
 * @param {Number} id - 问卷模板ID 
 * @returns {Promise}
 */
export function deleteQuestionnaireTemplate(id) {
  return request({
    url: `/api/questionnaires/templates/${id}`,
    method: 'delete'
  })
}

/**
 * 活动关联问卷
 * @param {Number} eventId - 活动ID
 * @param {Number} templateId - 问卷模板ID
 * @returns {Promise}
 */
export function associateEventQuestionnaire(eventId, templateId) {
  return request({
    url: `/api/events/${eventId}/questionnaire/${templateId}`,
    method: 'post'
  })
}

/**
 * 获取问卷反馈列表
 * @param {Object} params - 查询参数 {eventId, pageNum, pageSize}
 * @returns {Promise}
 */
export function getQuestionnaireResults(params) {
  return request({
    url: '/api/questionnaires/results',
    method: 'get',
    params
  })
}

/**
 * 提交问卷反馈
 * @param {Object} data - 问卷答案数据
 * @returns {Promise}
 * 
 * 请求参数示例:
 * {
 *   "eventId": 1,
 *   "answers": {
 *     "1": "很满意",
 *     "2": ["内容丰富", "互动性强"],
 *     "3": "希望能增加更多互动环节"
 *   }
 * }
 */
export function submitQuestionnaireAnswers(data) {
  return request({
    url: '/api/questionnaires/answers',
    method: 'post',
    data
  })
}

/**
 * 前台提交问卷反馈
 * @param {Object} data - 问卷答案数据
 * @returns {Promise}
 */
export function submitFrontQuestionnaireAnswers(data) {
  return request({
    url: '/api/front/questionnaire/answers',
    method: 'post',
    data
  })
}

/**
 * 获取问卷详情
 * @param {Number} id - 问卷模板ID
 * @returns {Promise}
 */
export function getQuestionnaireTemplate(id) {
  return request({
    url: `/api/questionnaires/templates/${id}`,
    method: 'get'
  })
}

/**
 * 获取活动关联的问卷
 * @param {Number} eventId - 活动ID
 * @returns {Promise}
 */
export function getEventQuestionnaire(eventId) {
  return request({
    url: `/api/events/${eventId}/questionnaire`,
    method: 'get'
  })
}

/**
 * 批量关联问卷模板到活动
 * @param {Number} eventId - 活动ID
 * @param {Array} templateIds - 问卷模板ID数组
 * @returns {Promise}
 */
export function associateEventQuestionnaires(eventId, templateIds) {
  return request({
    url: `/api/events/${eventId}/questionnaires`,
    method: 'post',
    data: templateIds
  })
}

/**
 * 获取活动的随机问卷
 * @param {Number} eventId - 活动ID
 * @returns {Promise}
 */
export function getRandomEventQuestionnaire(eventId) {
  return request({
    url: `/api/front/questionnaire/events/${eventId}/random`,
    method: 'get'
  })
}

/**
 * 前台获取活动关联的问卷
 * @param {Number} eventId - 活动ID
 * @returns {Promise}
 */
export function getFrontEventQuestionnaire(eventId) {
  return request({
    url: `/api/front/questionnaire/events/${eventId}/random`,
    method: 'get'
  })
}

/**
 * 提交问卷反馈 (新格式)
 * @param {Object} data - 问卷答案数据
 * @returns {Promise}
 * 
 * 请求参数示例:
 * {
 *   "questionnaireId": 1,  // 问卷模板ID
 *   "eventId": 1,      // 活动ID
 *   "userTicketId": 1,    // 用户电子票ID
 *   "answers": [       // 问题答案列表
 *     {
 *       "questionId": 1,   // 问题ID
 *       "answerValue": "A"  // 答案内容 (单选题为选项值如"A"，多选题为数组如["A","B"]，文本题为字符串)
 *     },
 *     {
 *       "questionId": 2,
 *       "answerValue": ["A", "B"]
 *     }
 *   ]
 * }
 */
export function submitQuestionnaire(data) {
  return request({
    url: '/api/front/questionnaire/answers',
    method: 'post',
    data
  })
}

/**
 * 获取用户问卷提交记录
 * @param {Object} params - 查询参数 {userId, eventId, templateId, pageNum, pageSize}
 * @returns {Promise}
 */
export function getUserQuestionnaireSubmissions(params) {
  return request({
    url: '/api/questionnaires/user-submissions',
    method: 'get',
    params
  })
} 